package cn.itcast.web.controller.company;

import cn.itcast.domain.company.Company;
import cn.itcast.service.company.CompanyService;
import lombok.extern.log4j.Log4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.Date;
import java.util.List;

@Controller
@RequestMapping("/company")
@Log4j
public class CompanyController {
    @Autowired
    private CompanyService companyService;

    @RequestMapping("/list")
    public String list(Model model){
        try {
            log.info("执行企业查询列表开始");
            List<Company> list = companyService.findAll();


            model.addAttribute("list",list);
            log.info("执行企业查询列表结束");
        } catch (Exception e) {
            e.printStackTrace();
            log.info("执行企业查询列表异常",e);
        }
        return "company/company-list";
    }

    /**
     * 2. 测试方法
     * 请求地址：http://localhost:8080/company/save.do?birth=1998-09-09
     * 访问结果
     *    A. 浏览器
     *       HTTP Status 400 – Bad Request  封装请求参数的问题。
     *    B. 后台日志
     *       Failed to convert value of type 'java.lang.String' to required type 'java.util.Date';
     *  解决：
     *      1. 自定义类型转换器，写一个类实现Converter接口
     *      2. 配置转换器工厂
     */
    @RequestMapping(value = "/save",name = "测试方法...!~_~")
    public String save(Date birth){
        System.out.println(birth);
        int i = 1/0;
        return "success";
    }

    @RequestMapping("/toAdd")
    public String toAdd(Company company){
        return "company/company-add";
    }

    @RequestMapping("edit")
    public String edit(Company company){
        /**
         * 添加
         * 功能入口：在company-add.jsp点击保存
         * 请求地址：http://localhost:8080/company/edit
         * 请求参数：name,licenseId,city...
         * 响应地址：
         *    去到列表重新查询显示添加的数据；
         *    最好用重定向
         *
         * 小结：添加、修改、删除操作成功后最好用重定向到列表；其他都用转发。
         */
        //判断是否存在,存在跟新,不存在添加
        if (StringUtils.isEmpty(company.getId())){
            companyService.save(company);
        }else {
            companyService.update(company);
        }


        return "redirect:/company/list";

    }
    /**
     * 进入修改页面
     * http://localhost:8080/company/toUpdate.do?id=0
     */
    @RequestMapping("toUpdate")
    public String toupdate(String id, Model model){
        Company company = companyService.findById(id);
        model.addAttribute("company",company);
        return "company/company-update";
    }

    @RequestMapping("delete")
    public String delete(String id){
        companyService.delete(id);
        return "redirect:/company/list";
    }
}
